/**
 * 给定字符串问cwbc的子序列有多少个
 * 子序列一般用DP
 * 令c是到i为止'c'的数量
 * w是到i为止子序列'cw'的数量
 * b是到i为止子序列`cwb`的数量
 * ans是到i为止`cwbc`的数量，依次更新即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;

llt const MOD = 2000120420010122LL;

string S;

llt proc(){
    for_each(S.begin(), S.end(), [](char & c){if(isupper(c))c=tolower(c);});

    int n = S.length();
    llt ans = 0;
    llt c = 0, w = 0, b = 0;
    for(auto ch : S){
        if('c' == ch){
            ++c;
            ans = (ans + b) % MOD;
        }else if('w' == ch){
            w = (w + c) % MOD;
        }else if('b' == ch){
            b = (b + w) % MOD;
        }else{
            
        }
    }

    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    while(cin >> S) cout << proc() << endl;
    return 0;
}